perm filename GAME.OLD[206,JMC] blob sn#073062 filedate 1973-12-02 generic text, type T, neo UTF8

(DEFPROP GAMEFNS
 (GAMEFNS VALMAX VALMAXLIS VALMIN VALMINLIS RECTIFY COMMONTAIL COMMONHEAD)
VALUE)

(DEFPROP VALMAX
 (LAMBDA(P ALPHA BETA)
  (COND	((TER (RECTIFY P) ALPHA BETA)
	 (CONS (MAX (CAR ALPHA) (MIN (CAR BETA) (IMVAL (RECTIFY P) ALPHA BETA))) P))
	(T (VALMAXLIS (SUCCESSORS (RECTIFY P) ALPHA BETA) ALPHA BETA))))
EXPR)

(DEFPROP VALMAXLIS
 (LAMBDA(U ALPHA BETA)
  (COND	((NULL U) ALPHA)
	(T
	 ((LAMBDA(X)
	   (COND ((NOT (LESSP (CAR X) (CAR BETA))) BETA)
		 (T (VALMAXLIS (CDR U) (COND ((NOT (LESSP (CAR ALPHA) (CAR X))) ALPHA) (T X)) BETA))))
	  (VALMIN (CAR U) ALPHA BETA)))))
EXPR)

(DEFPROP VALMIN
 (LAMBDA(P ALPHA BETA)
  (COND	((TER (RECTIFY P) ALPHA BETA)
	 (CONS (MAX (CAR ALPHA) (MIN (CAR BETA) (IMVAL (RECTIFY P) ALPHA BETA))) P))
	(T (VALMINLIS (SUCCESSORS (RECTIFY P) ALPHA BETA) ALPHA BETA))))
EXPR)

(DEFPROP VALMINLIS
 (LAMBDA(U ALPHA BETA)
  (COND	((NULL U) BETA)
	(T
	 ((LAMBDA(X)
	   (COND ((NOT (GREATERP (CAR X) (CAR ALPHA))) ALPHA)
		 (T (VALMINLIS (CDR U) ALPHA (COND ((NOT (GREATERP (CAR BETA) (CAR X))) BETA) (T X))))))
	  (VALMAX (CAR U) ALPHA BETA)))))
EXPR)

(DEFPROP RECTIFY
 (LAMBDA(P)
  (PROG	(Z Q)
	(SETQ Q (COMMONTAIL P P1))
   L1	(COND ((EQUAL Q P1) (GO L2)))
	(REVERT)
	(GO L1)
   L2	(SETQ Z (LISTSUBT P P1))
   L3	(COND ((NULL Z) (RETURN P)))
	(UPDATE (CAR Z))
	(SETQ Z (CDR Z))
	(GO L3)))
EXPR)

(DEFPROP COMMONTAIL
 (LAMBDA (U V) (REVERSE (COMMONHEAD (REVERSE U) (REVERSE V))))
EXPR)

(DEFPROP COMMONHEAD
 (LAMBDA(U V)
  (COND	((OR (NULL U) (NULL V) (NOT (EQUAL (CAR U) (CAR V)))) NIL)
	(T (CONS (CAR U) (COMMONHEAD (CDR U) (CDR V))))))
EXPR)